package org.brisling.base.repository;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;


/**
 * 
 * 主子表类型业务子表实体类，所有业务子类实体必须继承的仓库接口
 * @author : jackson wang
 * @Date   : 2015年6月8日 下午7:50:08
 * @version: 1.0
 * @param <T>	子表业务实体类
 * @param <ID>	子表业务实体类唯一编码
 */
@NoRepositoryBean
public interface BaseUpLinkRepository<T,ID extends Serializable> 
	extends BaseRepository<T,ID>{
	
	/**
	 * 查找特定主表唯一编码的子类业务对象实体 
	 * @param uplinkid 主表对象唯一编码
	 * @param page 分页参数
	 * @return <code>List</code> 类定义中泛型所指定的业务对象类集合
	 */
	Page<T> findByUplinkid(Long uplinkid,Pageable page);
	
	/**
	 * 查找特定主表唯一编码的子类业务对象实体 
	 * @param uplinkid 主表对象唯一编码
	 * @param _sort 排序参数
	 * @return <code>List</code> 类定义中泛型所指定的业务对象类集合
	 */
	List<T> findByUplinkid(Long uplinkid,Sort _sort);
	
	/**
	 * 统计特定主表唯一编码的子类业务数量
	 * @param uplinkid	主表对象唯一编码
	 * @return	Long 	子类业务对象数量
	 */
	Long countByUplinkid(Long uplinkid);
	
	

}
